The Basics of Autotools
Major Autotools Components
Autotools 是相关软件包的集合,这些软件包一起使用时,可以消除创建可移植软件时遇到的许多困难。这些工具和一些相对简单的上游提供的输入文件以其,用于为软件包创建构建系统。
图1 A basic overview of how the main autotools components fit together.
A basic overview of how the main autotools components fit together.
在一个简单的设置中:
autoconf
程序从configure.in
或configure.ac
中产生configure
脚本(见下面的 NOTE)。automake
程序从Makefile.am
中产生Makefile.in
。configure
脚本从Makefile.in
文件中产生一个或多个Makefile
文件。make
程序使用Makefile
来编译程序。
NOTE:
configure.in
名字曾经是标准。然而,GNU 文档现在建议使用configure.ac
因为当处理它时会更清楚该使用哪个程序。两个文件具有相同的用途并且具有相同的格式 —— 唯一的区别时名称。
你可能会看到在各个阶段函数都使用了 autotools。src_prepare 函数时在配置和编译之前处理源代码的最适合的位置。特别是,src_prepare 在 src_cofigure 之前调用,src_cofigure 通常期望 configure
脚本存在。
autoreconf
工具据推测可以根据需要运行 autoconf
(以及 automake
、 autoheader
、 aclocal
、 autopoint
和 libtoolize
)。有时运行起来没问题。一些软件包附带了一个名为 autogen.sh
的 shell 脚本,该脚本会执行相同的操作(与 autogen
无关)。autotools.eclass 包含了与它们名字对应的独立工具的 helper 函数,例如 eautoconf
和 eautomake
。
Warning:你必须不能尝试修改在运行
configure
和make
之间生成的任何文件。这可能会导致 autotools 尝试变得更加聪明并且重建文件,进而导致你的更改被删除。在一些情况下,这还会导致./configure
参数被悄然删除,这可能会破坏依赖关键。最佳的的处理方法通常是改用.ac=/=.in
文件。
The configure.ac
File
configure.ac
文件用来创建 /.configure
脚本。它包括一系列由 autoconf
处理和展开的宏。这些宏可以检查软件包和库,处理 --enable
和 --with
的切换,并且生成各种文件。